package com.flying.box;

/**
 * @author 刘鹏飞
 * @ClassName BoxDemo1
 * @Date 2024/12/21 08:25
 * @Created by 刘鹏飞
 * @Description 基本包装类
 *
 *            基本数据类型        基本包装类型
 *            byte                Byte
 *            short               Short
 *            int                 Integer
 *            long                Long
 *            float               Float
 *            double              Double
 *            char                Character
 *            boolean             Boolean
 *
 *            基本包装类型的使用场景
 *            1.当方法需要一个 object[] 数组作为参数时,才需要创建一个基本包装类型的数组
 *            2. 泛型里只能使用基本包装类型,不能使用基本数据类型
 *            3. 当从数据库读取一个数据时,当数据库里的数据时空,会返回 null
 *
 *
 *            基本数据类型和基本包装类型之间可以相互转换:  装箱和拆箱
 *
 *
 *
 */
public class BoxDemo1 {
    public static void main(String[] args) {

        // java中有两大数据类型:基本数据类型和引用数据类型
        int a=10; // 便于运算
//        a.toString()   不能调方法


        //  包装类

        Integer i=new Integer(50);   // 从Java9开始被弃用
        Integer j=Integer.valueOf(9);    // 官方推荐

        int b=j.intValue();  // 包装类对象转换为基本数据类型


        // 把字符串转成数字
        Integer m = Integer.valueOf("345");
        // Integer n = Integer.valueOf("22cf");  //  NumberFormatException


        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);



        // 测试自动装箱和拆箱
        Integer x=100;   //  Integer x=Integer.valueOf(100);
        int y=x;         //  int y=x.intValue();



        // 自动装箱的空指针问题
//        Integer z=null;   //  编译器: int q=z.intValue();  NullPointerException
//        int q=z;


        // 包装类常用方法

        System.out.println(Integer.toUnsignedLong(-123));   //  无符号数

        // 进制转换
        System.out.println(Integer.toHexString(22));
        System.out.println(Integer.toBinaryString(22));
        System.out.println(Integer.toOctalString(22));

        //
        System.out.println(Integer.parseInt("7367"));
        // radix:基数.这个方法就是将字符串已指定进制进行解析,转换为整数
        System.out.println(Integer.parseInt("1A", 16));
        System.out.println(Integer.parseInt("010101011000", 0, 11, 10));

        System.out.println(Integer.TYPE);


        System.out.println(Integer.highestOneBit(888));
        System.out.println(Integer.lowestOneBit(888));
    }

}
